/**
 * Created by yangjiao on 2019/7/29.
 */
 import Vue from 'vue'
 import VueI18n from 'vue-i18n'
 import eleLocaleZhCN from 'element-ui/lib/locale/lang/zh-CN'
 import eleLocaleZhTW from 'element-ui/lib/locale/lang/zh-TW'
 import eleLocaleEn from 'element-ui/lib/locale/lang/en'
 import router from '@/routers'
 import store from '@/store'
 import { Base64 } from '@/utils/m7Utils'
 Vue.use(VueI18n)
 // 初始化语言
 const messages = {
   zh_CN: {
     'login': {
       'name7M': '容联<span></span>七陌',
       'idle': '空闲',
       'busy': '忙碌',
       'rongLian7M': '容联七陌',
       'cloudService': '云客服',
       'cloudkfLogin': '云客服登录',
       'clouddxLogin': '呼叫中心登录 >',
       'account': '账号',
       'forgetPwd': '忘记密码',
       'policy': '我已阅读并同意 <a style="color: #459ae9;text-decoration: none;" href="{serviceTerms}" target="_blank">《服务协议》</a>和<a style="color: #459ae9;text-decoration: none;" href="{privacyPolicy}" target="_blank">《隐私政策》</a>',
       'onLineServer': '在线客服',
       'andlineAnswe': '话机接听',
       'phoneAnswe': '手机接听',
       'plahText': '工号@账号名',
       'loginBtn': '登录',
       'loginPassword': '密码',
       'loginingBtn': '登录中...',
       'remember': '记住密码',
       'status': '登录状态',
       'forget': '忘记密码',
       'error': '服务异常',
       'userOrPass': '用户名或者密码错误',
       'concernPublicNum': '关注容联小七公众号',
       'phoneProcessWork': '手机处理工单、查通话记录',
       'phoneLoginToAnswer': '手机登录- 通过手机来接听或拨打电话，登录系统后同时使用呼叫中心+在线客服',
       'custCallsTransferredAgent': '客户来电会转到座席手机，可用于下班后座席值班等场景。座席外呼时，平台会先呼叫座席手机，然后再呼叫客户，最后实现双方通话。',
       'callsVia': '话机（推荐）- 通过话机来接听或拨打电话，登录系统后同时使用呼叫中心+在线客服',
       'independPhoneEquipment': '独立的电话设备，通话质量高，需要提前配置好话机或者语音网关设备。',
       'softPhoneLogin': '在线客服- 登录系统后只能使用在线客服',
       'enterpriseCommunications': '网站、移动APP、微信、邮箱、等多渠道客服接入，客户管理平台，工单管理平台，云端知识库，在线客服报表、质检，智能机器人。',
       'downloadSoftphone': '下载软电话',
       'cloudElectricitySales': '呼叫中心',
       'intelligentCommunicate': '移动客服',
       'custServiceHotline': '',
       'technicalSupportEmail': '技术支持邮箱：' + Base64.decode('c2VydmljZUA3bW9vci5jb20='),
       'businessLicense': '增值电信业务经营许可证B2-20213887',
       'beijingICP': '京ICP备140006443号-1',
       'rongLianSevenStreet': '©2020容联七陌',
       'isNullByName': '用户名不能为空',
       'isNullByPassword': '请输入密码',
       'isNull': '用户名或者密码不能为空',
       'errorCodeIdentify': '错误密码验证',
       'pleaseMoveToIdentify': '您的账号存在异常，请滑动验证',
       'moveBlock': '拖动滑块验证',
       'identifySuccess': '验证成功',
       'browserTip1': '很抱歉，您正在使用的浏览器无法完全支持我们的页面。建议您使用以下浏览器的最新版本：',
       'browserTip4': '下载谷歌浏览器',
       'browserTip5': '还是用这个浏览器打开',
       'browserTitle': '谷歌Chrome浏览器',
       'browserTrackTips1': '很抱歉,您正在使用的浏览器无法播放用户浏览轨迹回放,建议您使用谷歌浏览器的最新版本',
       'browserTrackTips4': '暂时不播放了,谢谢',
       'emailTip1': 'IP验证没通过，需要邮箱验证码登录，验',
       'emailTip2': '证码已经发到您的邮箱，请查收!',
       'emailCode': '请输入邮箱验证码',
       'emailTip3': '如果邮箱没有收到验证码，点击重新发送',
       'phoneTip': '您还没有绑定手机号，请输入绑定!',
       'phoneErrorTip': '请输入正确手机号码',
       'Chinese': '中文',
       'Japan': '日文',
       'English': '英语'
     }
   }
 }
 const i18n = new VueI18n({
   locale: 'zh_CN',
   messages
 })
 // 获取static中语言的不通样式
 function getLanguageStyle (langTemp) {
   let languageStyle = document.getElementById('m7LanguageStyle')
   if (langTemp === 'zh_CN') {
     languageStyle.href = ''
   } else {
     languageStyle.href = window.location.origin + '/static/i18nStyle/lang-' + langTemp + '.css'
   }
 }
 function init (langPackage, lang) {
   let locales = ''
   switch (lang) {
     case 'zh_CN':
       locales = { ...langPackage, ...eleLocaleZhCN }
       store.commit('SET_LABEL_POSITION', 'left')
       break
     case 'zh_TW':
       locales = { ...langPackage, ...eleLocaleZhTW }
       store.commit('SET_LABEL_POSITION', 'left')
       break
     case 'en':
       locales = { ...langPackage, ...eleLocaleEn }
       store.commit('SET_LABEL_POSITION', 'top')
       break
     default:
       locales = { ...langPackage, ...eleLocaleZhCN }
       store.commit('SET_LABEL_POSITION', 'left')
       break
   }
   router.afterEach((route) => {
     let title = route.meta.title || ''
     console.warn(store)
     document.title = `${locales.routeI18n[title] || title} - ${locales.login.cloudService}${store.getters.accountName}`
   })
   Vue.set(Vue.config, 'lang', lang || 'zh_CN')
   i18n.setLocaleMessage(lang || 'zh_CN', locales)
   i18n.locale = lang
   return locales
 }
 function fetchLang (str, url, urlConfig, count, langTemp) {
   // 本地没有缓存语言包 则去请求
   Promise.all([
     window.fetch(url + '?_=' + str, {
       method: 'get',
       headers: {
         'Content-Type': 'application/json'
       }
     }),
     window.fetch(urlConfig + '?_=' + str, {
       method: 'get',
       headers: {
         'Content-Type': 'application/json'
       }
     })
   ])
   // .then(response => response.json())
     .then(([res1, res2]) => { // 解决某种情况下语言包请求发送3次并走catch的问题
       // res.json().then(function (json) {
       //   let langJson = init(json, langTemp)
       //   window.langJson = langJson
       // })
       Promise.all([res1.json(), res2.json()]).then(([json1, json2]) => {
         let json = Object.assign(json1, json2)
         let langJson = init(json, langTemp)
         window.langJson = langJson
       })
     })
     .catch((res) => {
       if (count < 3) {
         count++
         initLang(count)
       } else {
         let localLang = ''
         // 国际化优化 当座席网络很不稳定的时候 座席已经有本地存储的时候 使用本地语言提示语
         let errorMessage = !window.langJson ? 'Network anomaly！！！ Please check your network' : '请求超时'
         Vue.prototype.$message.error(errorMessage)
         if (window.localStorage.langJson) {
           localLang = JSON.parse(window.localStorage.langJson)
           init(localLang, langTemp)
         }
       }
     })
 }
 function initLang (count = 0) {
   window.localStorage.lang = window.localStorage.lang || 'zh_CN'
   let langTemp = window.localStorage.lang || 'zh_CN'
   let url = window.location.origin + '/static/i18n/locales/' + langTemp + '.json'
   let urlConfig = window.location.origin + '/static/i18n/locales/' + langTemp + '_Config.json'
   getLanguageStyle(langTemp)
   let versionUrl = window.location.origin + '/static/version/version.json?rand=' + Math.random()
   let versionStr = window.localStorage.getItem('version') || Math.random()
   window.fetch(versionUrl, {method: 'get', headers: {'Content-Type': 'application/json'}}).then((res) => {
     if (res) {
       versionStr = res.version
     } else {
       versionStr = Math.random()
     }
   })
   console.log(versionStr, 'versionStr')
   fetchLang(versionStr, url, urlConfig, count, langTemp)
 }
 export { initLang, Vue, store, router, i18n }
